package com.sihan.framework.etm.mapper;

import com.framework.mybatis.mapper.BaseMapper;
import com.sihan.framework.etm.dto.FeedbackDTO;
import com.sihan.framework.etm.entity.User;
import com.sihan.framework.etm.vo.UserVO;
import com.sihan.framework.etm.vo.baseData.CangUserVO;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

@Mapper
public interface UserMapper extends BaseMapper<User, String> {

    List<UserVO> selectPage(@Param("name") String name,
                            @Param("username") String username,
                            @Param("role") String role, @Param("code") String code,
                            @Param("id") String id, @Param("userId") String userId, @Param("roleId") String roleId,
                            @Param("orgIds") String[] orgIds);

    List<String> selectRoleIds(@Param("userId") String userId);

    List<String> selectByorgId(@Param("orgId") String orgId);

    List<String> selectUserNameByorgId(@Param("orgId") String orgId);

    long selectPageCount(@Param("name") String name, @Param("orgId") String orgId);

    /**
     * 更新登录失败次数+1
     *
     * @param userId
     * @return
     */
    @Update("update user set login_fault = login_fault + 1 where id = #{id}")
    boolean upUserLoginFault(@Param("id") String userId);

    @Update("update user set lock_time = null, locked = #{u.locked} where id = #{u.id}")
    boolean unlockUserByUserId(@Param("u") User user);


    boolean resetUserPsdByUserId(@Param("u") User user);

    long getActivitiUserCount();

    int getNoticeNum(@Param("userId") String userId);

  List<Map<String, String>> getUserList(@Param("companyCode") String companyCode);

  List<Map<String, String>> getOrgList();

  List<Map<String, String>> getRoleList();

  void insertFeedback(@Param("fb") FeedbackDTO feedbackDTO,@Param("createTime") Date createTime,
		  @Param("createUser") String createUser);

  /**
   * 查询App人员数据
   * @param name
   * @param companyCode
   * @return
   * @return List<UserVO>
   * @author 张荣英
   * @date Nov 13, 2019 1:51:11 PM
   */
  List<UserVO> getStaffList(@Param("name") String name,@Param("companyCode") String companyCode);

  /**
   *
   * @description  查询用户信息
   * @param userId
   * @return
   * @auther 韩兵
   * @Date 2020年7月24日
   * @return UserVO
   */
  UserVO selectUserByUserId(@Param("userId") String userId);

  /**
   *
   * @description  查询仓关联的用户
   * @return
   * @auther 韩兵
   * @Date 2021年3月5日
   * @return List<CangUserVO>
   */
  List<CangUserVO> selectCangUser(@Param("userId") String userId);

}
